// 路由鉴权--通过全局守卫完成
// 除了登录页，其他路由都需要登录才能访问；

// 引入路由器
import router from './router'
import { asyncRoutes, anyRoutes } from '@/router/routes'
// 引入进度条
import nProgress from 'nprogress'
// 引入进度条的样式
import 'nprogress/nprogress.css'
// 去掉进度条加载时右侧的loading图标
nProgress.configure({ showSpinner: false })
// 引入大仓库
import pinia from '@/store'
// 引入用户相关的仓库
import userUserStore from '@/store/modules/user'
let userStore = userUserStore(pinia)
// 路由白名单，不需要token
let whiteMenu = ['/login', '/404']

// 添加全局守卫
// 前置守卫
router.beforeEach(async (to, from, next) => {
  // 访问路由组件前，进度条开始
  nProgress.start()
  // TODO:全部放行，等登录接口调通后添加鉴权
  if (to.matched.length) {
    next()
  } else {
    console.log('no matched', to)

    try {
      await userStore.login()
      // 防止动态路由，刷新页面出现空白的问题
      next({ ...to })
    } catch (error) {
      await userStore.logout()
    }
  }

  // 根据token判断用户是否登录
  // let token = userStore.userData.token;
  // if(token) { // 已登录，直接放行
  //   next()
  // } else { // 未登录，判断是否是白名单
  //   if(whiteMenu.includes(to.path)) { // 白名单直接放行
  //     next()
  //   } else { // 否则，跳到登录页
  //     next('/login')
  //   }
  // }
})

// 后置守卫
router.afterEach((to, from) => {
  // 访问路由结束后，进度条消失
  nProgress.done()
})